package com.xuexi.mashibing;

/**
 * ThreadLocal 内存泄露的问题
 * <p>
 * ThreadLocal 本身不存储数据，类似一个工具类，去操作ThreadLocalMap
 * ThreadLocalMap 又是基于Entry数组实现的，原因是一个线程可以绑定多个ThreadLocal，所以需要存储多个数据，所以采取entry数组实现
 * ThreadLocalMap 的Entry数据继承了WeakReference（弱引用），并且Entry的key就是ThreadLocal本身
 * <p>
 * 弱引用特点：ReferenceTypesExample
 * <p>
 * 内存泄露
 * key
 * value
 */
public class ThreadLocalOOM {

//    key即为ThreadLocal本身：弱引用被垃圾回收
//    value 为存储的值：如果没有及时调用remove方法会导致value一直存在内存中，解决方法就是及时调用remove方法移除Entry


//    JvmThreadInstanceEntryImpl.ThreadStateMap
}
